<?php
class CalendarsController extends AppController {
	var $name = 'Calendars';
	var $components = array('Domini');
	var $helpers = array('Html','Form','Accessibility','Pagination', 'Associations', 'Ajax', 'Input');
	
	/*function beforeFilter() {
		if ($this->action != 'findNameByShortname' && $this->action != 'findCalendars') {
			$this->checkAdmin();
		}
	}*/
	
	function index() {
		$this->Calendar->recursive = 0;
		$title = 'Calendários';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		$conditions = array();
		// Permissao: se pode visualizar todas as unidades
		$group = $this->othAuth->getData('group');
		$level =$group['level'];
		$unitUser = $this->othAuth->getData('unit');

		if ($level >= 100) {  // not system admin
			$conditions[] = array("organization_id"=>$unitUser['0']['Organization']['id']);
		}

		$calendars = $this->Calendar->find('all', array('conditions'=>$conditions));
		$this->set('calendars',$calendars);
	}

	function view( $id=null ) {
		if (!$id) $this->redirect('/calendars');
		$title = 'Visualizar calendário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->Calendar->id = $id;
		$this->set('calendar', $this->Calendar->read());
	}
	
	function add() {
		$title = 'Cadastrar calendário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);

		$this->set('organizations', $this->Calendar->Organization->find('list'));
		
		if (!empty($this->data)) {
			if($this->data["Calendar"]["name"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Calendar"]["shortname"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Sigla é obrigatório.';
			}

			if (!(isset($_SESSION['mensagem']['error']))) {
				if ($this->Calendar->save($this->data)) {
					$_SESSION['mensagem']['success'][] = 'Calendário cadastrado com sucesso!';
					$this->redirect('/calendars/view/'.$this->Calendar->getLastInsertId());
				} else {
					$_SESSION['mensagem']['error'][] = 'Erro ao tentar cadastrar o calendário.';
				}
				$this->redirect('/calendars/');
			}

		}
		$tags = $this->Calendar->Tag->find('list');
		$this->set(compact('tags'));
	}
	
	function edit($id=null) {
		$title = 'Editar calendário';
		$this->set('title', $title);
		$this->set('pageTitle', $title);
		
		$this->set('organizations', $this->Calendar->Organization->find('list'));

		$this->Calendar->id = $id;
		if (empty($this->data)) {
			$this->data = $this->Calendar->read();
		} else {
			// Validacao
			if($this->data["Calendar"]["name"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Nome é obrigatório.';
			}
			if($this->data["Calendar"]["shortname"] == null) {
				$_SESSION['mensagem']['error'][] = 'O campo Sigla é obrigatório.';
			}
			
			if (!(isset($_SESSION['mensagem']['error']))) {
				if ($this->Calendar->save($this->data)) {
					$_SESSION['mensagem']['success'][] = 'Calendário alterado com sucesso!';
				} else {
					$_SESSION['mensagem']['error'][] = 'Erro ao tentar alterar o calendário.';
				}
				$this->redirect('/calendars/view/'.$id);
			}
			
		}
		$calendar = $this->Calendar->find(array('`Calendar`.id' => $id));
		$this->set('calendar', $calendar);

		$tags = $this->Calendar->Tag->find('list');
		$this->set(compact('tags'));
	}
	
	function delete($id=null) {
		if (!$id) $this->redirect('/calendars');
		if ($this->Calendar->del($id)) {
			$_SESSION['mensagem']['success'][] = 'Calendário excluido com sucesso!';
		} else {
			$_SESSION['mensagem']['error'][] = 'Erro ao tentar excluir o calendário.';
		}
		$this->redirect('/calendars');
	}
	
	function findNameByShortname($shortname=null) {
		$calendar = $this->Calendar->find(array('Calendar.shortname'=>$shortname),array('name'));
		return $calendar['Calendar']['name'];
	}
	
	function findCalendars() {
		$this->Calendar->recursive = 1;
		return $this->Calendar->findAll();
	}
	
}
